package com.kmxd.ams.client.system.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 部门表
 *
 * @author admin
 * @since 2021-06-10
 */
@Schema(description = "组织机构对象")
@Data
public class SysDeptAddDTO implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键ID */
  @Schema(description = "主键ID")
  private Long id;

  /** 所属公司id 用于type=1时，即部门的所属公司id，因为部门可能会有多级 */
  @Schema(description = "所属公司id 用于type=1时，即部门的所属公司id，因为部门可能会有多级")
  private Long comId;

  /** 编码 非空、不可重复且全局唯一 */
  @Schema(description = "编码 非空、不可重复且全局唯一")
  @NotBlank(message = "编码 非空、不可重复且全局唯一不能为空")
  @Size(max = 100, message = "编码 非空、不可重复且全局唯一长度不能超过100个字符")
  private String code;

  /** 名称 非空 */
  @Schema(description = "名称 非空")
  @NotBlank(message = "名称 非空不能为空")
  @Size(max = 100, message = "名称 非空长度不能超过100个字符")
  private String name;

  /** 父节点id 自关联，顶级默认0 */
  @Schema(description = "父节点id 自关联，顶级默认0")
  private Long parentId;

  /** 层级 公司与部门分别从0开始 */
  @Schema(description = "层级 公司与部门分别从0开始")
  private Integer level;

  /** id路径 （例如：集团的path：/1/ 股份的path：/1/2/ 软件的path：/1/2/3/） */
  @Schema(description = "id路径 （例如：集团的path：/1/   股份的path：/1/2/   软件的path：/1/2/3/）")
  @Size(max = 100, message = "id路径 （例如：集团的path：/1/   股份的path：/1/2/   软件的path：/1/2/3/）长度不能超过100个字符")
  private String pathCode;

  /** name路径（例如：集团的path：/集团/ 股份的path：/集团/股份/ 软件的path：/集团/股份/软件/） */
  @Schema(description = "name路径（例如：集团的path：/集团/   股份的path：/集团/股份/   软件的path：/集团/股份/软件/）")
  @Size(
      max = 100,
      message = "name路径（例如：集团的path：/集团/   股份的path：/集团/股份/   软件的path：/集团/股份/软件/）长度不能超过100个字符")
  private String pathName;

  /** 归档部门id 归档部门id，只有在类型为公司时有效，即type为0时有效 */
  @Schema(description = "归档部门id 归档部门id，只有在类型为公司时有效，即type为0时有效")
  private Long archdepId;

  /** 部门类型 用于标记部门类型，1：普通部门 2：档案部门，默认值1。此字段只对type=1即部门的数据有效 */
  @Schema(description = "部门类型 用于标记部门类型，1：普通部门 2：档案部门，默认值1。此字段只对type=1即部门的数据有效")
  private Long deptType;

  /** 启用状态 0未启用，1启用，默认1 */
  @Schema(description = "启用状态 0未启用，1启用，默认1")
  private Long status;

  /** 备注 */
  @Schema(description = "备注")
  @Size(max = 100, message = "备注长度不能超过100个字符")
  private String remarks;

  /** 排序 */
  @Schema(description = "排序")
  @NotNull(message = "排序不能为空")
  private Integer sort;
}
